Transactions in computing systems are usually clarified as stateless or stateful. Having state, or being stateful, means that a first device is keeping track of second device. A stateful connection is one in which information about a connection, or a request for information, between two systems is retained at the first device for future use. A stateless connection is one in which no information is retained by either sender or receiver. The sender or user (initiator) transmits information or a request to the receiver (target) and does not expect an acknowledgment of receipt. The receiver receives the packet without knowledge of any prior activity of the user.
Where a user requests information from a server, for example, by sending a read request to a data base manager, the user processer may wait for the request to be fulfilled by the server. That is, the sequential operation of the user program is suspended until such time that the data that has been requested is returned, or an error message is generated by the server where a fault of some kind is encountered. Depending on the design of a system watchdog timers or other measures may be used to ensure that a user process, for example, does not wait indefinitely for a response or error message from a data base server. On the other hand, data base servers are commonly plagued with latency problems due to disk access latency, competing user requests, or the like, and a fairly long period of time may be established in the protocol before the user takes some action that presumes a failure of the request to be performed. This time is typically a multiple of the expected latency time of the successful completion time period. In the case of systems using mechanical disks, responses in less than several milliseconds are not expected, and so the watchdog times might be set for a substantial portion of a second. The request may be repeated a number of times before the user program reports a fault
Where a user requests information (e.g., a page of data stored by a server), the user waits for the request to be fulfilled. The response of the server normally includes the completion status of the request and the information. In the case of an error, the response would include an error code. To prevent the user program from being blocked from further operation by the failure of the server without having provided a response, many user applications provide for a retry after a time out interval.